package com.jxb.first;

/**
 * 移动零
 *
 * @author jiaobo
 * @date Created in 2024/11/17 16:30
 **/
public class RemoveZero {

    public static void main(String[] args) {
        int[] nums = {1,0,2,0,3,3,4};
        removeZero(nums);
        System.out.println(nums);
    }

    //通过双指针
    //定义指针i,j；进行一次遍历，遍历中，若num[i]不为零，赋值给num[j]，j的初始值为0，赋值之后，j++
    //再进行一次遍历；遍历条件，index=nums的长度-1，index小于等于j，index--，遍历过程中，num[index]=0
    //时间复杂度：O(n)
    //空间复杂度：O(1)
    public static void removeZero(int[] nums) {
        int j = 0;
        for (int i = 0;i<nums.length;i++) {
            if (nums[i] != 0) {
                nums[j] = nums[i];
                j++;
            }
        }

        for (int i = nums.length-1;i>=j;i--) {
            nums[i] = 0;
        }
    }

}
